package com.designpattern.StrategyPattern.example2;

/**
 * @author yue
 * @since 2022-03-16
 * 在社交电商中分享商品是一个很重要的环节，假设现在要我们实现一个分享图片功能，
 * 比如当前有 单商品、多商品、下单、会场、邀请、小程序链接等等多种分享场景。
 */

public class Test {

    public static void main(String[] args) {
        // 1、行为条件
        String shareType = "order";
        // 2、应对策略（通过获取对应实例（工厂内部收集了所有实例））
        ShareStrategy shareStrategy = ShareFactory.getShareStrategy(shareType);
        // 3、结果
        shareStrategy.shareAlgorithm("order");// out：当前分享图片是order
    }

    /*
     * 优点：算法策略可以自由实现切换扩展性好，加一个策略，只需要增加一个类
     * 缺点：策略类数量多需要维护一个策略枚举，让别人知道你当前具有哪些策略
     * 总结：学习设计模式我们还是要学习每种设计模式的思想，任何一种设计模式存在即合理。当然也不要因为设计模式而设计代码，那样反而得不偿失。
     */
}
